package com.bookcloud.java21.chapter10.注解反射获取注解值106;

/** 注解反射获取注解值 1. 获取类上的注解 2. 获取方法上的注解 3. 获取属性上的注解 */
public class AnnotationReflection {
  public static void main(String[] args) {
    // 创建类对象
    Class<Person> personClass = Person.class;
    // 检查类的注解是否存在
    if (personClass.isAnnotationPresent(ClassInfo.class)) {
      // 获取类上的注解
      ClassInfo classInfo = personClass.getAnnotation(ClassInfo.class);
      System.out.println(classInfo.author());
      System.out.println(classInfo.date());
      System.out.println(classInfo.version());
      System.out.println(classInfo.desc());
    }
    System.out.println("=======================");
    // 检查接口的注解是否存在
    if (Cat.class.isAnnotationPresent(ClassInfo.class)) {
      // 获取接口上的注解
      ClassInfo classInfo = Cat.class.getAnnotation(ClassInfo.class);
      System.out.println(classInfo.author());
      System.out.println(classInfo.date());
      System.out.println(classInfo.version());
      System.out.println(classInfo.desc());
    }
  }
}
